#include <stdio.h>
#include <stdlib.h>
void main(void)
{

    // 很多时候，不能事先确定数组到底有多少个成员。如果声明数组的时候，事先给出一个很大的成员数，就会很浪费空间。
    // C 语言提供了一个解决方法，叫做弹性数组成员（flexible array member）
    struct vstring
    {
        int len;
        char chars[];
        // 弹性数组成员有一些专门的规则。首先，弹性成员的数组，必须是 struct 结构的最后一个属性。
        // 另外，除了弹性数组成员，struct 结构必须至少还有一个其他属性
    };
    // 上面示例中，struct vstring结构有两个属性。len属性用来记录数组chars的长度，chars属性是一个数组，但是没有给出成员数量。
    // chars数组到底有多少个成员，可以在为vstring分配内存时确定
    int n = 20;
    struct vstring *str = malloc(sizeof(struct vstring) + n * sizeof(char));
    str->len = n;
}